/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;

import Beans.MarcaBean;
import Conexion.Conexion;
import java.sql.ResultSet;
import java.util.Vector;

/**
 *
 * @author orellana
 */
public class MarcaDAO {

    // Atributos de la clase
    public static String INSERT_DATOS_MARCA = "INSERT INTO cat_marcas(idCategoria,codigoMarca, nombreMarca,fechaAlta, idEstado)VALUES";
    //public static String GET_DATOS_MARCAS = "SELECT idMarca, codigoMarca, nombreMarca FROM cat_marcas WHERE idEstado=1 ORDER BY nombreMarca";
    public static String GET_DATOS_MARCAS= "SELECT "+
                                                        "mar.codigoMarca As codigoMarca,"+
                                                        "mar.nombreMarca As nombreMarca,"+
                                                        "cat.nombreCategoria As nombreCategoria,"+
                                                        "mar.idMarca As idMarca"+
                                                        " FROM "+
                                                        "cat_marcas mar,"+
                                                        "cat_categorias cat "+
                                                        " WHERE "+
                                                        "mar.idCategoria=cat.idCategoria AND "+
                                                        "mar.idEstado=1;";
    public static String GET_DATOS_MARCA = "SELECT codigoMarca, nombreMarca, idMarca, idCategoria FROM cat_marcas WHERE idMarca=";
    public static String GET_DATOS_CONSULTA = "SELECT codigoMarca, nombreMarca, idMarca FROM cat_marcas WHERE codigoMarca=marcaBean.getCodigoMarca() OR nombreMarca=marcaBean.getNombreMarca()";
    public static String GET_ID_MARCA="SELECT auto_increment FROM information_schema.tables WHERE table_schema='bd_pegaso' AND table_name='cat_marcas'";
    public static String DELETE_DATOS_MARCA="UPDATE cat_marcas SET idEstado=2 WHERE ";
    public static String UPDATE_DATOS_MARCA="UPDATE cat_marcas SET ";
    public static String GET_DATOS_MARCA_ACTIVOS = "SELECT idMarca, nombreMarca, codigoMarca FROM cat_marcas WHERE ";
    public static String GET_ID_MARCA_NOMBRE="SELECT idMarca FROM cat_marcas ";
    public static String GET_MARCAS_ID_CATEGORIA="SELECT nombreMarca FROM cat_marcas ";

    // Metodos publicos
    // Insertamos los datos de la marca
    public Vector insertDatosMarca(MarcaBean marcaBean, Conexion conect){
        //Variables locales
        Vector resultDatos = new Vector();
        // Insertamos los datos de las marcas
        try {
            conect.getPreparedStatement().execute(INSERT_DATOS_MARCA + "('"+marcaBean.getIdCategoria()+"'"+",'"+marcaBean.getCodigoMarca()+"'"+",'"+marcaBean.getNombreMarca()+"'"+",NOW()"+",1);");
            resultDatos.add("OK");
        } catch (Exception e) {
            resultDatos.add("ERROR");
            // Mensaje en consola
            System.out.println("Error:: " +e);
        }
        // Retornamos el valor
        return resultDatos;
    }

    // Obtenemos los datos de las marcas
    public Vector getDatosMarcas(MarcaBean marcaBean, Conexion conect){
        // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos de la marca
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_MARCAS);
            while(resultSet.next()){
                MarcaBean getDatosMarcas=new MarcaBean();
                getDatosMarcas.setCodigoMarca(resultSet.getString("codigoMarca"));
                getDatosMarcas.setNombreMarca(resultSet.getString("nombreMarca"));
                getDatosMarcas.setDesCategoria(resultSet.getString("nombreCategoria"));
                getDatosMarcas.setIdMarca(resultSet.getString("idMarca"));
                resultDatos.add(getDatosMarcas);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("Error: "+e);
        }
        // Retornamos el valor
        return resultDatos;
    }

    // Obtenemos los datos de la marca
    public Vector getDatosMarca(MarcaBean marcaBean, Conexion conect){
        // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos de la marca
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_MARCA + marcaBean.getIdMarca() + " AND idEstado=1");
            while(resultSet.next()){
                MarcaBean getDatosMarca=new MarcaBean();
                getDatosMarca.setCodigoMarca(resultSet.getString("codigoMarca"));
                getDatosMarca.setNombreMarca(resultSet.getString("nombreMarca"));
                getDatosMarca.setIdMarca(resultSet.getString("idMarca"));
                getDatosMarca.setIdCategoria(resultSet.getString("idCategoria"));
                resultDatos.add(getDatosMarca);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("Error: "+e);
        }
        // Retornamos el valor
        return resultDatos;
    }

     // Obtenemos id de la marca
    public Vector getIdMarca (MarcaBean marcaBean, Conexion conect){
    // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos de la marca
        try{
        ResultSet resultSet = conect.getPreparedStatement().executeQuery(GET_ID_MARCA);
            while (resultSet.next()){
            MarcaBean getIdMarca=new MarcaBean();

            getIdMarca.setIdMarca(resultSet.getString("auto_increment"));
            resultDatos.add(getIdMarca);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("ERROR: " +e);
        }
            // Retornamos el valor
            return resultDatos;
    }

     // Eliminamos los Datos de la marca (Logica)
    public Vector deleteDatosMarca(MarcaBean marcaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Eliminamos los Datos dela marca
        try {
            conect.getPreparedStatement().execute(DELETE_DATOS_MARCA+
                    "idMarca="+marcaBean.getIdMarca());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

      // Actualizamos los Datos delas marcas
    public Vector updateDatosMarca(MarcaBean marcaBean,Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Actualizamos los Datos delas marcas
        try {
            conect.getPreparedStatement().execute(UPDATE_DATOS_MARCA+
                    " codigoMarca='"+marcaBean.getCodigoMarca()+"'"+
                    ",nombreMarca='"+marcaBean.getNombreMarca()+"'"+
                    ",idCategoria='"+marcaBean.getIdCategoria()+"'"+
                    ",fechaModificacion=NOW() WHERE idMarca="+marcaBean.getIdMarca());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

     // Busqueda de marcas Registradas con Estatus Activo (1)
    public Vector buscarDatosMarcaActivo(MarcaBean marcaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Buscamos las marcas Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_MARCA_ACTIVOS+
                    "nombreMarca LIKE '%" + marcaBean.getNombreMarca() + "%' AND idEstado = 1 ORDER BY nombreMarca");
            while(resultSet.next()){
                MarcaBean getDatosMarcaActivo=new MarcaBean();
                getDatosMarcaActivo.setCodigoMarca(resultSet.getString("codigoMarca"));
                getDatosMarcaActivo.setNombreMarca(resultSet.getString("nombreMarca"));
                getDatosMarcaActivo.setIdMarca(resultSet.getString("idMarca"));
                resultDatos.add(getDatosMarcaActivo);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos el ID de la Marca por Nombre
    public Vector getDatosMarcaByNombre(MarcaBean marcaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos el ID de la Marca por Nombre
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_ID_MARCA_NOMBRE+
                    "WHERE nombreMarca='"+marcaBean.getNombreMarca()+"'");
            while(resultSet.next()){
                MarcaBean getDatosMarca=new MarcaBean();
                getDatosMarca.setIdMarca(resultSet.getString("idMarca"));
                resultDatos.add(getDatosMarca);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println();
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos las Marcas por ID Categoria
    public Vector getDatosMarcaByIdCategoria(MarcaBean marcaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos las Marcas por ID Categoria
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_MARCAS_ID_CATEGORIA+
                    "WHERE idCategoria="+marcaBean.getIdCategoria()+" AND idEstado=1");
            while(resultSet.next()){
                MarcaBean getDatosMarca=new MarcaBean();
                getDatosMarca.setNombreMarca(resultSet.getString("nombreMarca"));
                resultDatos.add(getDatosMarca);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+e);
        }
        // Retornamos el Valor
        return resultDatos;
    }
}

